package gladiatormanager;

import java.util.ArrayList;


public class Reppu {
    private ArrayList<PuettavaTavara> riisututTavarat;
    private ArrayList<PuettavaTavara> puetutTavarat;
    private int paino;
    private boolean avattu;
    
    public Reppu() {
        riisututTavarat = new ArrayList<PuettavaTavara>();
        puetutTavarat = new ArrayList<PuettavaTavara>();
        avattu = false;
        paino = 0;
    }
    
    public void riisuTavarat(int[] tavaranKohdat) {
        for (int i = 0; i <puetutTavarat.size(); i++) {
            for (int ii = 0; ii < tavaranKohdat.length; ii++) {
                if (puetutTavarat.get(i).varaakoKohdan(tavaranKohdat[ii])) {
                    riisututTavarat.add(puetutTavarat.get(i));
                    puetutTavarat.remove(i);
                }
               
            }
        }
    }
    
    public void pueTavara(int index) {
        index = index-puetutTavarat.size();
        if ((index < 0) || (index >= riisututTavarat.size())) return;
        riisuTavarat(riisututTavarat.get(index).getVaratutKohdat());
        puetutTavarat.add(riisututTavarat.get(index));
        riisututTavarat.remove(index);       
    }
    
    public void setAvattu(boolean avattu) {
        this.avattu = avattu;
    }
    
    public boolean getAvattu() {
        return avattu;
    }
    
    public void lisaaTavara(PuettavaTavara tavara, boolean puettuna) {
        paino = paino + tavara.getPaino();
        if (puettuna) {
            riisuTavarat(tavara.getVaratutKohdat());
            puetutTavarat.add(tavara);
        }
        else riisututTavarat.add(tavara);
    }
    
    @Override
    public String toString() {
        String teksti = "Bag contains:\n";
        for (int i = 0; i < puetutTavarat.size(); i++) {
            teksti = teksti+puetutTavarat.get(i).toString()+" (equipped)";
            if ((i < puetutTavarat.size()-1) || !riisututTavarat.isEmpty()) teksti = teksti + "\n";
        }
        for (int i = 0; i < riisututTavarat.size(); i++) {
            teksti = teksti+riisututTavarat.get(i).toString()+ "(equip)";
            if (i < riisututTavarat.size()-1) teksti = teksti + "\n";
        }
        return teksti;
    }
    
    public String toString2() {
        return (puetutTavarat.size()+riisututTavarat.size())+" Items. "+paino+" kg";
    }
    
    public PuettavaTavara getCopy() {
        return new PuettavaTavara();
    }
    
    public PuettavaTavara getPuettuAse() {
        for (int i = 0; i < puetutTavarat.size(); i++) {
            if (puetutTavarat.get(i).varaakoKohdan(PuettavaTavara.ASE)) {
                return puetutTavarat.get(i);
            }
        }
        return null;
    }
    
    public int getKantomatka() {
        int tulos = 0;
        for (int i = 0; i < puetutTavarat.size(); i++) {
            tulos += puetutTavarat.get(i).getKantomatka();
        }
        return tulos;
    }
    
    public int getVoima() {
        int tulos = 0;
        for (int i = 0; i < puetutTavarat.size(); i++) {
            tulos += puetutTavarat.get(i).getVoima();
        }
        return tulos;
    }
    
    public int getSuojaus() {
        int tulos = 0;
        for (int i = 0; i < puetutTavarat.size(); i++) {
            tulos += puetutTavarat.get(i).getSuojaus();
        }
        return tulos;
    }
    
    public int getLyontikustannus() {
        int tulos = 0;
        for (int i = 0; i < puetutTavarat.size(); i++) {
            tulos += puetutTavarat.get(i).getLyontikustannus();
        }
        return tulos;
    }
    
    public int getPaino() {
        return paino;
    }
    
}
